The same pattern everywhere
In every host, three things stay the same:- Construct a
DialogMachinewith a flow, an LLM URI, and tools - Route inbound text to
dialog_machine.turn(text) - Send the reply text back to the host’s output channel
Choose your host
CLI chatbot
Zero infrastructure. Best for testing and prompt tuning.
LiveKit
Voice agent via
Agent(llm=DialogMachineLLM(...)) plugin.PipeCat
Drop-in
FrameProcessor for PipeCat pipelines.FastAPI
REST endpoint for text chatbots and web widgets.
Unpod Voice
Plug your
DialogMachine into an Unpod AgentRunner session — no extra server needed.Unit testing
Because SuperDialog is text-only, every dialog is unit-testable.
Lines of code comparison
| Host | Adapter | Extra LoC |
|---|---|---|
| CLI | None - direct input()/print() or superdialog chat | ~5 |
| LiveKit | DialogMachineLLM | ~8 |
| PipeCat | make_processor | ~12 |
| FastAPI | FastAPIRouter or direct route | ~6 |
| Unpod Voice (SDK) | unpod.AgentRunner + session.dialog_machine | ~6 |
| Unit test | None - direct calls | ~3 |
| Custom (Slack, Discord, etc.) | None - direct callback | ~3 |